/******************************************************************
编程环境：----------
        软件:Arduino2.3.4
        硬件:Mega2560主控板, Mega2560扩展版,
             步进电机驱动板, 导轨模块, Windows11操作系统电脑
        库函数:<Arduino.h>, <AccelStepper.h>, <MultiStepper.h>

实验目的：-----------
        1.了解步进电机的工作原理；
        2.能够驱动步进电机。

操作流程：----------
        详细请看操作视频.

实验现象：-----------
        机械导轨滑块从起始点正向运动36毫米，
        停下来，然后反向运动36毫米，即回到起始点

实验接线简略图：----------
        电池仓         步进电机驱动模组      mega2560扩展版
        11.1V插针-----------VIN
        GND插针-------------GND
                            DIR -----------------A9
                            STEP ----------------A10
                            EN ------------------A8
                             V ------------------5V
                             G ------------------GND
        12V母座-------------------------------板载供电口1

2024.12.19 Uni Tongchuang Intelligent Robot Technology CO.,Ltd
*******************************************************************/

#define EN A8  //定义步进电机使能引脚
#define STEP  200    //步进电机每圈步数
#define BORD_RATE 115200 //设定串口波特率为115200
#define SUBDIVISION 16   //设定步进电机细分(1,2,3开关扳动到ON端)
#define TOTAL_STEP (STEP * SUBDIVISION)   //16细分下每圈步数
#define LEAD 12  //设定丝杠导程.单位:毫米.该参数需要根据实际情况设定.
//上面定义的LEAD参数实际上表示的意思为：表示步进电机转动一圈，丝杠前进的距离. 

int stepper_speed = 4800;  //设定步进电机速度

void setup() {
  delay(1000);
  Serial.begin(BORD_RATE); //开启串口
  stepper_init();     //步进电机引脚初始化
  move_distance(36);  //机械导轨正向移动36毫米
  delay(3000);
  move_distance(-36); //机械导轨反向移动36毫米
  delay(3000);
}

void loop() {

}
